イテレータ型(Python 組み込み型)
https://docs.python.org/ja/3/library/stdtypes.html#iterator-types
#Python標準ライブラリ_組み込み型
この概念(注:コンテナでの反復処理の概念)は 2 つの別々のメソッドを使って実装されています
これらのメソッドを使ってユーザ定義のクラスで反復を行えるようにできます。
container.__iter__()
(two distinct methodなのでiterator.__iter__()も含んでいるかも)
One method needs to be defined for container objects to provide iterable support:
「コンテナオブジェクトがイテラブルのサポートを提供するには、1つのメソッド(__iter__)が定義されている必要があります」
Python用語集 iterable
(理解:__iter__を実装したコンテナオブジェクトはイテラブル)
iterator オブジェクトを返します。
iteratorは__iter__と__next__の2つのメソッドをサポートするオブジェクト
この2つのメソッドで「イテレータプロトコル」
iterator.__next__()
iterator の次のアイテムを返します。
もしそれ以上アイテムが無ければ StopIteration 例外を送出します。
シーケンスは、必ず反復処理メソッドをサポートしています。
iterator.__iter__()
iterator オブジェクト自体を返します。
このメソッドはコンテナとイテレータの両方を for および in 文で使えるようにするために必要です。
ジェネレータ型(Python 組み込み型)
👉 3.3.7. コンテナをエミュレートする